﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Text.RegularExpressions;


/* Version 1 - 2013.11.27
 * 최초 프로그램 제작
 * 단순 권한 리스트 출력 기능 추가
 * 
 * Version 2 - 2013.12.04
 * 검색(필터링) 기능 추가
 */

namespace TAagentAccessList
{
    public partial class form_program : Form
    {
        String[] AccessList = null;

        public form_program()
        {
            InitializeComponent();
        }

        private void btn_SearchAccessList_Click(object sender, EventArgs e)
        {
            txb_SearchText.Clear();
            String regkey_32bit = "Software\\Somansa\\TruAccess\\ProxyAgent\\IPList";

            SearchTheAccessList(regkey_32bit);
        }

        private void SearchTheAccessList(String regpara)
        {
            RegistryKey regkey = Registry.CurrentUser.OpenSubKey(regpara, true);
            
            try
            {
                AccessList = regkey.GetValueNames();
                lst_PrintList.Items.Clear();

                for (int i = 0; i < AccessList.Count(); i++)
                {
                    AccessList[i] = Regex.Replace(AccessList[i], @"[(]\d*[)]", "");
                }

                AccessList = AccessList.Distinct().ToArray();

                lb_Count.Text = "보유 권한 수 : " + AccessList.Count() + " 개 [전체]";

                for (int i = 0; i < AccessList.Count(); i++)
                {
                    lst_PrintList.Items.Add(AccessList[i]);
                }

                if (lst_PrintList.Items.Count == 0)
                {
                    MessageBox.Show("[참고] TA에이전트 로그인이 안되어 있습니다.");
                }
            }
            catch
            {
                MessageBox.Show("TA에이전트 설치 확인 필요!!");
            }
        }

        private void btn_SearchBotton_Click(object sender, EventArgs e)
        {
            SearchTheIP();
        }

        private void txb_SearchText_TextChanged(object sender, EventArgs e)
        {
            SearchTheIP();
        }

        private void SearchTheIP()
        {
            String SearchText = txb_SearchText.Text;
            lst_PrintList.Items.Clear();

            for (int i = 0; i < AccessList.Length; i++)
            {
                if (AccessList[i].Contains(SearchText))
                {
                    lst_PrintList.Items.Add(AccessList[i]);
                    if (SearchText == "")
                    {
                        lb_Count.Text = "보유 권한 수 : " + lst_PrintList.Items.Count.ToString() + " 개 [전체]";
                    }
                    else
                    {
                        lb_Count.Text = "보유 권한 수 : " + lst_PrintList.Items.Count.ToString() + " 개";
                    }
                }
            }
        }
    }
}
